
// 豆瓣电影 官方文档：https://developers.douban.com/wiki/?title=movie_v2

const URI = 'https://douban.uieee.com/v2/movie';

const fetch = require('./fetch'); // 引入请求模块

/**
 * 抓取 豆瓣电影特定类型的API
 * @param  {String} path   类型，例如：'coming_soon'
 * @param  {Objece} params 参数
 * @return {Promise}       包含抓取任务的Promise
 */
function fetchApi(path, params) {
  return fetch(URI, path, params)
}

/**
 * 获取 列表
 * @param  {String} type   类型，例如：'coming_soon'
 * @param  {Number} page   页码
 * @param  {Number} count  页条数
 * @param  {String} search 搜索关键词
 * @return {Promise}       包含抓取任务的Promise
 */
function find(path, page = 1, count = 20, search = '') { // ES6函数默认参数
  const params = {
    start: (page - 1) * count,
    count: count,
    city: getApp().data.currentCity // 城市（全局变量）
  }
  return fetchApi(path, search ? Object.assign(params, { q: search }) : params) // 通过Object.assign是否合并搜索关键词 search ? Object.assign(params, {q: search}) : params
    .then(res => res.data) // 成功回调
}

/**
 * 获取 单条
 * @param  {Number} id     电影ID
 * @return {Promise}       包含抓取任务的Promise
 */
function findOne(id) {
  return fetchApi('subject/' + id)
    .then(res => res.data)
}

module.exports = {
  find,
  findOne
}